//
//  CZUserAccount.swift
//  weibo
//
//  Created by Mac on 16/5/14.
//  Copyright © 2016年 fengzhixiang. All rights reserved.
//

import UIKit
/// 用户账户模型
class CZUserAccount: NSObject {
    /**
    *  用户授权的唯一票据
    */
    var access_token: String?

    ///access_token的生命周期，单位是秒数, 基本数据类型不能使用?,KVC会找不到
    var expires_in: NSTimeInterval = 0 {
        didSet {
            // KVC给expires_in属性赋值完后,来创建expiresDate
            expiresDate = NSDate(timeIntervalSinceNow: expires_in)
        }

    }



    /**
    *  授权用户的uid
    */
    var uid : String?

    /// 过期时间,方便比较时间
    var expiresDate: NSDate?

    /**
    *  通过字典来创建模型
    */
    init(dict:[String: AnyObject]) {
        super.init()
        // 对象创建好后才能使用对象的方法, 内部会调用setValue(value: AnyObject?, forKey key: String),每次拿一个key和value调用一次
        setValuesForKeysWithDictionary(dict)
    }

    //为了防止接收到无用的Key而报错
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {
          CZPrint(items: "forUndefinedKey: \(key)")
    }

    /**
    *  定义打印方法 description属性,细节
    */
   override var description : String {
        get{
            return "用户账户: access_token: \(access_token), expires_in: \(expires_in), uid: \(uid),expiresDate:\(expiresDate)"

        }

    }

    // MARK: - 归档和解档
    /**
    *  解档
    */
    init(coder aDecoder: NSCoder) {
        //根据键值对取出沙盒中aDecoder文件里的值
        access_token = aDecoder.decodeObjectForKey("access_token")as? String
        expires_in = aDecoder.decodeDoubleForKey("expires_in")
        uid = aDecoder.decodeObjectForKey("uid")as? String
        expiresDate = aDecoder.decodeObjectForKey("expiresDate")as? NSDate

    }

    /**
    *  归档
    */
    func encodeWithCoder(aCoder: NSCoder){
        aCoder.encodeObject(access_token,forKey: "access_token")
        aCoder.encodeDouble(expires_in, forKey: "expires_in")
        aCoder.encodeObject(uid, forKey: "uid")
        aCoder.encodeObject(expiresDate, forKey: "expiresDate")
    }

}











